home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / editors / me31111 / ue311cmd.zoo / cmd / ehelp.cmd < prev    next >
Encoding:
Text File  |  1992-03-09  |  9.7 KB  |  510 lines

  1. store-procedure    init-help
  2.  
  3.     clear-message-line
  4.     print "                [Loading Help System]"
  5.     set %oldscreen $scrname        ;remember the screen we were on
  6.     set %oldmode $modeflag        ;remember the original $modeflag
  7.     set %oldhardtab $hardtab    ;remember the original $hardtab
  8.     set $discmd FALSE
  9.     find-screen "HELP"        ;switch to the help screen
  10.  
  11.     set %oldres $sres
  12.     !if &or &or &or &seq $sres "EGA" &seq $sres "VGA" &seq $sres "CGA40" &seq $sres "VGA12"
  13.         set $sres "CGA"
  14.     !endif
  15.  
  16. ;    !if &seq $sres "CGA"
  17.         set $orgrow 0
  18.         set $orgcol 0
  19.         change-screen-size        ; Maximum screen-size
  20.         change-screen-width        ; Maximum screen-width
  21. !force    set $curwidth 80
  22. !force    set $pagelen 25
  23. ;    !endif
  24.  
  25.     set $hardtab 8
  26.     set $modeflag FALSE
  27.     set %done FALSE            ;not done with help
  28.     view-file &find ehelp1.txt    ;read in the help file!
  29.     set %helpfile 1            ;mark which help file we are in
  30.     delete-mode "view"        ;don't lock the help file
  31.     sethscreen
  32.     set %helpscreen "Main Menu"    ;start at the main menu
  33.     gethscreen
  34. !endm
  35.  
  36. store-procedure gethscreen    ;switch the current help screen
  37.  
  38. *gethbegin
  39.  
  40.     ;build the window ID line
  41.     1 next-window
  42.     beginning-of-file
  43.     set-mark
  44.     end-of-file
  45.     kill-region
  46.     !if &gre &len $version 5
  47.         insert-string "MicroEMACS version "
  48.     !else
  49.         insert-string "    MicroEMACS version "
  50.     !endif
  51.     insert-string $version
  52.     insert-string "        Help System    "
  53.     insert-string %helpscreen
  54.     beginning-of-line
  55.     unmark-buffer
  56.  
  57.     ;find and display the named helpscreen
  58.     2 next-window
  59.     beginning-of-file
  60.     set %tmp &cat "~n=>" %helpscreen
  61.     !force search-forward %tmp
  62.     !if &seq $status FALSE
  63.         !if &equ %helpfile 1
  64.             view-file &find ehelp2.txt ;read in the help file!
  65.             set %helpfile 2        ;mark which help file we are in
  66.         !else
  67.             view-file &find ehelp1.txt ;read in the help file!
  68.             set %helpfile 1        ;mark which help file we are in
  69.         !endif
  70.         delete-mode "view"        ;don't lock the help file
  71.             
  72.         beginning-of-file
  73.         !force search-forward %tmp
  74.         !if &seq $status FALSE
  75.             set %helpscreen "Main Menu"
  76.             print "          [Attempt to fetch illegal screen]"
  77.             !goto gethbegin
  78.         !endif
  79.     !endif
  80.     1 next-line
  81.     beginning-of-line
  82.     !if &equ $curchar 61
  83.         1 forward-character
  84.         set-mark
  85.         end-of-line
  86.         copy-region
  87.         set %helpscreen $kill
  88.         !goto gethbegin
  89.     !endif
  90.     1 next-line
  91.     beginning-of-line
  92.     1 redraw-display
  93.     update-screen
  94.     set %topline $curline
  95.     set %bottomline &add $curline 20
  96.  
  97.     firstsel    ;position us at the first selection
  98.  
  99. !endm
  100.  
  101. store-procedure sethscreen    ;set up the windows on the help screen
  102.  
  103.     find-screen "HELP"
  104.     delete-other-windows
  105.     beginning-of-file
  106.     split-current-window
  107.     0 resize-window
  108.     add-mode "red"
  109.     add-mode WHITE
  110.     select-buffer "Window ID"
  111.     next-window
  112.     split-current-window
  113.     18 resize-window
  114. !force    19 resize-window
  115.     add-mode "blue"
  116.     add-mode WHITE
  117.     next-window
  118.     add-mode "red"
  119.     add-mode WHITE
  120.     beginning-of-file
  121.     !if &les $pagelen 25
  122.         4 next-line
  123.         1 redraw-display
  124.     !endif
  125. !endm
  126.  
  127. store-procedure firstsel    ;position us at the first selection
  128.  
  129.     9 set-mark        ;remember where we started from
  130.     set %endscreen &add $curline 20
  131.     search-forward "< >"    ;look for a selection
  132.     !if &gre $curline %endscreen
  133.  
  134.         ;no selections on this screen!
  135.         9 goto-mark
  136.         set %selflag FALSE
  137.     !else
  138.         2 backward-character
  139.         set %selflag TRUE
  140.         8 set-mark
  141.     !endif
  142.  
  143. !endm
  144.  
  145. store-procedure setsel        ;highlight the current selection
  146.  
  147.     !if &seq %selflag TRUE
  148.         delete-next-character
  149.         insert-string "*"
  150.         backward-character
  151.         unmark-buffer
  152.     !endif
  153. !endm
  154.  
  155. store-procedure clearsel        ;clear the current selection
  156.  
  157.     !if &seq %selflag TRUE
  158.         delete-next-character
  159.         insert-string " "
  160.         backward-character
  161.         unmark-buffer
  162.     !endif
  163. !endm
  164.  
  165. store-procedure nextcmd
  166.  
  167.     !if &seq $pending FALSE
  168.         update-screen
  169.     !endif
  170.     set %cmd >cmd
  171.     set %cmd &bind %cmd
  172.     clear-message-line
  173.  
  174. !endm
  175.  
  176. store-procedure execloop    ;execute a user screen
  177.  
  178.     setsel        ;mark the current selection
  179.     nextcmd        ;get the command
  180.     clearsel    ;clear the selection
  181.     execcmd        ;execute the command
  182.  
  183. !endm
  184.  
  185. store-procedure execcmd        ;execute the current command
  186.  
  187.     !if &seq %cmd "set"
  188.         !if &seq $debug TRUE
  189.             set $debug FALSE
  190.         !else
  191.             set $debug TRUE
  192.         !endif
  193.         !return
  194.     !endif
  195.  
  196.     !if &seq %selflag TRUE
  197.  
  198.         !if &seq %cmd "forward-character"
  199.             forward-selection
  200.             !return
  201.         !endif
  202.  
  203.         !if &seq %cmd "backward-character"
  204.             backward-selection
  205.             !return
  206.         !endif
  207.  
  208.         !if &seq %cmd "next-line"
  209.             next-selection
  210.             !return
  211.         !endif
  212.  
  213.         !if &seq %cmd "previous-line"
  214.             previous-selection
  215.             !return
  216.         !endif
  217.  
  218.         !if &seq %cmd "newline"
  219.             select-this
  220.             !return
  221.         !endif
  222.  
  223.     !endif
  224.  
  225.     !if &seq %cmd "next-page"
  226.         next-hscreen
  227.         !return
  228.     !endif
  229.  
  230.     !if &seq %cmd "newline"
  231.         next-hscreen
  232.         !return
  233.     !endif
  234.  
  235.     !if &seq %cmd "previous-page"
  236.         previous-hscreen
  237.         !return
  238.     !endif
  239.  
  240.     !if &seq %cmd &bind "FN6"
  241.         set %helpscreen "Index"
  242.         gethscreen
  243.         !return
  244.     !endif
  245.  
  246.     !if &seq %cmd "beginning-of-file"
  247.         set %helpscreen "Main Menu"
  248.         gethscreen
  249.         !return
  250.     !endif
  251.  
  252.     !if &seq %cmd "exit-emacs"
  253.         exit-help
  254.         !return
  255.     !endif
  256.  
  257.     !if &seq %cmd &bind "MSa"
  258.         select-mouse
  259.         !return
  260.     !endif
  261.  
  262.     !if &seq %cmd &bind "MSb"
  263.         !return
  264.     !endif
  265.  
  266.     !if &seq %cmd "abort-command"
  267.         print "[Help Aborted right HERE!]"
  268.         stop
  269.     !endif
  270.  
  271.     print "              [Not a legal command at this time]"
  272.  
  273. !endm
  274.  
  275. store-procedure forward-selection
  276.  
  277.     search-forward "< >"
  278.     !if &gre $curline %bottomline
  279.         set $curline %topline
  280.         search-forward "< >"
  281.     !endif
  282.     2 backward-character
  283.     8 set-mark
  284.  
  285. !endm
  286.  
  287. store-procedure backward-selection
  288.  
  289.     search-reverse "< >"
  290.     !if &less $curline %topline
  291.         set $curline %bottomline
  292.         search-reverse "< >"
  293.     !endif
  294.     1 forward-character
  295.     8 set-mark
  296.  
  297. !endm
  298.  
  299. store-procedure next-selection
  300.  
  301.     set %target $curcol
  302.     forward-selection
  303.     !while ¬ &equ %target $curcol
  304.         forward-selection
  305.     !endwhile
  306.  
  307. !endm
  308.  
  309. store-procedure previous-selection
  310.  
  311.     set %target $curcol
  312.     backward-selection
  313.     !while ¬ &equ %target $curcol
  314.         backward-selection
  315.     !endwhile
  316.  
  317. !endm
  318.  
  319. store-procedure select-this    ;select the currently highlighted selection
  320.  
  321.     next-word        ;jump to the beginning of the selection
  322.     7 set-mark        ;mark it so we can come back!
  323.     set-mark
  324.     set %tmpline $curline    ;remember what line we are on
  325.     search-forward "< >"    ;find the beginning of the next selection
  326.     !if ¬ &equ %tmpline $curline
  327.  
  328.         ;we are on a new line, try for a <tab>!
  329.         7 goto-mark
  330.         search-forward "~t"
  331.         !if ¬ &equ %tmpline $curline
  332.  
  333.             ;we are no longer on the same line, select the whole line
  334.             7 goto-mark
  335.             end-of-line
  336.         !else
  337.             ;backup over the tab
  338.             1 backward-character
  339.         !endif
  340.     !else
  341.  
  342.         ;select up to this selection
  343.         4 backward-character
  344.     !endif
  345.  
  346.     ;get the selection
  347.     copy-region
  348.     set %selection &trim $kill
  349. ;    print &cat &cat "[selecting :" %selection ":]"
  350.     set %helpscreen %selection
  351.     gethscreen
  352. !endm
  353.  
  354. store-procedure select-mouse
  355.  
  356.     9 set-mark
  357. !force    mouse-move-down
  358.  
  359.     !if &and &gre $ypos 20 &less $ypos 24
  360.  
  361.         ; a mouse click on a key in the key window/find the key
  362.         1 forward-character
  363.         !force search-reverse "["
  364.         !if &seq $status FALSE
  365.             search-forward "["
  366.         !else
  367.             1 forward-character
  368.         !endif
  369.         set-mark
  370.         search-forward "]"
  371.         1 backward-character
  372.         copy-region
  373.         2 next-window
  374.         set %cmd $kill
  375.  
  376.         !if &and &seq %selflag TRUE &seq %cmd "ENTER"
  377.             select-this
  378.             !return
  379.         !endif
  380.  
  381.         !if &seq %cmd "F10" 
  382.             exit-help
  383.             !return
  384.         !endif
  385.  
  386.         !if &seq %cmd "I"
  387.         !endif
  388.  
  389.         !if &seq %cmd "PG UP"
  390.             previous-hscreen
  391.             !return
  392.         !endif
  393.  
  394.         !if &seq %cmd "PG DOWN"
  395.             next-hscreen
  396.             !return
  397.         !endif
  398.  
  399.         !if &seq %cmd "F6"
  400.             set %helpscreen "Index"
  401.             gethscreen
  402.             !return
  403.         !endif
  404.  
  405.         !if &seq %cmd "HOME"
  406.             set %helpscreen "Main Menu"
  407.             gethscreen
  408.             !return
  409.         !endif
  410.     !endif
  411.  
  412.     !if &or &seq %selflag FALSE &or &gre $ypos 24 &equ $ypos 1
  413.         2 next-window
  414.         print "              [Not a legal command at this time]"
  415.         9 goto-mark
  416.         !return
  417.     !endif
  418.  
  419.     3 forward-character
  420.     backward-selection
  421.     select-this
  422.  
  423. !endm
  424.  
  425. store-procedure next-screen
  426.  
  427.     search-reverse "NEXT["
  428.     set-mark
  429.     search-forward "]"
  430.     backward-character
  431.     copy-region
  432.     set %helpscreen $kill
  433.     gethscreen
  434.  
  435. !endm
  436.  
  437. store-procedure next-hscreen
  438.  
  439.     search-reverse "NEXT["
  440.     5 forward-character
  441.     set-mark
  442.     search-forward "]"
  443.     backward-character
  444.     copy-region
  445.     set %helpscreen $kill
  446.     gethscreen
  447.  
  448. !endm
  449.  
  450. store-procedure previous-hscreen
  451.  
  452.     search-reverse "PREV["
  453.     5 forward-character
  454.     set-mark
  455.     search-forward "]"
  456.     backward-character
  457.     copy-region
  458.     set %helpscreen $kill
  459.     gethscreen
  460.  
  461. !endm
  462.  
  463. store-procedure exit-help
  464.     !if ¬ &seq $sres %oldres
  465.         set $sres %oldres
  466.     !endif
  467.     find-screen %oldscreen
  468.     set $modeflag %oldmode
  469.     set $hardtab %oldhardtab
  470.     clear-message-line
  471.     print " cleaning... be patient please..."
  472.     delete-buffer "[init-help]"
  473.     delete-buffer "[gethscreen]"
  474.     delete-buffer "[sethscreen]"
  475.     delete-buffer "[firstsel]"
  476.     delete-buffer "[setsel]"
  477.     delete-buffer "[clearsel]"
  478.     delete-buffer "[nextcmd]"
  479.     delete-buffer "[forward-selection]"
  480.     delete-buffer "[backward-selection]"
  481.     delete-buffer "[next-selection]"
  482.     delete-buffer "[previous-selection]"
  483.     delete-buffer "[select-this]"
  484.     delete-buffer "[next-screen]"
  485.     delete-buffer "[next-hscreen]"
  486.     delete-buffer "[previous-hscreen]"
  487.     delete-screen HELP
  488.     clear-message-line
  489.     print " cleaning... be patient please..."
  490.     !force delete-buffer ehelp1.txt
  491.     !force delete-buffer ehelp2.txt
  492.     set $discmd TRUE
  493.     set %done TRUE
  494.  
  495. !endm
  496.  
  497. ;    Help main program
  498.  
  499. init-help
  500. !while ¬ %done
  501.     execloop
  502. !endwhile
  503.  
  504. delete-buffer "[select-mouse]"
  505. delete-buffer "[execloop]"
  506. delete-buffer "[execcmd]"
  507. delete-buffer "[exit-help]"
  508. clear-message-line
  509. print " cleaning... Done."
  510.